/*************************************************************************
    > File Name    : Thread.h
    > Author       : LiuLei
    > Mail         : 2261459486@qq.com 
    > Created Time : 2022年11月24日 星期四 21时29分35秒
 ************************************************************************/

#ifndef __LL_THREAD_H__
#define __LL_THREAD_H__

#include "NonCopyable.h"
#include <pthread.h>
#include <functional>
using std::function;

using ThreadCallback = function<void()>;

class Thread
: public NonCopyable
{
public:
    Thread(const ThreadCallback &cb, int thIndex);
    Thread(ThreadCallback &&cb, int thIndex);
    ~Thread();

    void start();
    void stop();

private:
    static
    void *threadFunc(void *arg);

private:
    int                 _thIndex;       //线程编号
    pthread_t           _thId;
    bool                _isRunning;
    ThreadCallback      _cb;
};

#endif
